The present invention relates generally to the field of data communication, and more particularly to allocating messages.
Cloud computing refers to the delivery of computing as a service rather than a product. Shared resources, software, and information are provided to computers and other devices as a utility (like the electricity grid) over a network (typically the Internet). Cloud computing provides computation, software, data access, and storage services that do not require end-user knowledge of the physical location and configuration of the system that delivers the services.
One of the core components of cloud computing is the messaging layer. The messaging layer enables asynchronous communication between applications (clients). It also enables intracloud components to communicate with each other in an asynchronous manner. For example, in a cloud foundry environment, the cloud controller places the request in the messaging bus, which is read by the droplet execution agent (DEA) in order to process the requests.
Once and only once delivery, and assured delivery (or guaranteed delivery of messages), are two notable characteristics of messaging. One message cannot be delivered more than once to any consumers with once and only once delivery. The once and only once delivery model of the messaging layer differentiates it from other existing technologies like database, caching, and content delivery network. The once and only once delivery model works on the principle of the write once and read once (WORO) model. Whereas, the existing technologies mentioned work on write once and read multiple (WORM) model. With the “assured delivered” approach of the WORM model, the available “state” of the messages must persist until the consumer consumes the message. It should be noted that the “once and only once delivery” model may also be referred to in the art as the “exactly once” model.
In cloud computing, it is desirable to provide continuous availability, high availability (HA), and fault tolerance. One reason this (combination) is desired is in the event a datacenter goes down. If a datacenter goes down, another datacenter will be available to service clients without any data loss or downtime. Generally, this is achieved by regularly backing up data between datacenters, either synchronously or asynchronously.